/* 
 * File:   universidade.h
 * Author: Vagner Clementino
 *
 * Created on 7 de Abril de 2012, 07:25
 */

#define INFINITO -1

typedef struct{
   int id_aluno;
   int grau_satisfacao;
   int nota_aluno;
}aluno_matriculado;


typedef struct{
    int   id;
    int   num_vagas;
    int   vagas_preenchidas;
    float satisfacao_alunos;
    float satisfacao_universidades;
    int   nota_de_corte;
    aluno_matriculado* lista_alunos;    
}universidade;

/*Cria dinamicamente uma estrutura do tipo universidade*/
universidade* cria_universidade(int id_universidade,int num_vagas);

/*Cria dinamicamente uma estrutura do tipo aluno_matriculado*/
aluno_matriculado* cria_alunos_matriculados(int num_vagas);

/*Libera espaco alocado para uma struct do tipo universidade*/
void desaloca_universidade(universidade* u);

/*Imprime as informações contidas na estrutura do tipo universidade apontada 
 * pelo ponteiro p */
void imprime_universidade(const universidade* u);

void imprime_alunos_matriculados(const universidade* u,int tam_lista,
                                 FILE* arquivo_saida);

void ordena_alunos_matriculados(aluno_matriculado** a_matriculados, int tam_lista);

void Particao_lista(int Esq, int Dir, int *i, int *j, aluno_matriculado** A);

void Ordena_lista(int Esq, int Dir, aluno_matriculado** A);